package org.nobject.common.swing.g;

import java.awt.Container;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.MouseListener;

import javax.swing.Icon;
import javax.swing.JLabel;

/**
 * GLabel
 *
 * @author bianrongjun
 * @version 1.0
 */
public class GLabel extends JLabel implements IG{

	/**
	 * 构造函数 
	 */
	public GLabel() {
		super();
		this.core=new GComponent();
	}
	
	/**
	 * 构造函数 
	 * @param icon
	 */
	public GLabel(Icon icon,Dimension prefferdSize,MouseListener listener){
		super(icon);
		this.setPreferredSize(prefferdSize);
		this.setSize(prefferdSize);
		this.addMouseListener(listener);
		this.core=new GComponent();
	}
	
	/**
	 * 构造函数 
	 * @param container
	 * @param name
	 * @param text
	 * @param constraints
	 */
	public GLabel(Container container, String name, String text, Object constraints, Dimension preferredSize,int alignment) {
		this();
		if (name != null) this.setName(name);
		if (text != null) this.setText(text);
		if(preferredSize!=null) this.setPreferredSize(preferredSize);
		if(container!=null){
			if (constraints == null) container.add(this);
			else container.add(this, constraints);
		}
		this.setHorizontalAlignment(alignment);
	}

	
	/**
	 * 构造函数 
	 * @param container
	 * @param name
	 * @param text
	 */
	public GLabel(Container container, String name, String text) {
		this(container, name, text, null,null,GLabel.CENTER);
	}

	/**
	 * 构造函数 
	 * @param container
	 * @param name
	 * @param text
	 * @param preferredSize
	 */
	public GLabel(Container container, String name,String text, Dimension preferredSize) {
		this(container, name, text, null,preferredSize,GLabel.CENTER);
	}
	
	/**
	 * 构造函数 
	 * @param container
	 * @param text
	 * @param preferredSize
	 */
	public GLabel(Container container, String text, Dimension preferredSize) {
		this(container, null, text, null,preferredSize,GLabel.CENTER);
	}
	
	/**
	 * 构造函数 
	 * @param text
	 * @param preferredSize
	 */
	public GLabel(String text, Dimension preferredSize) {
		this(null, null, text, null,preferredSize,GLabel.CENTER);
	}
	
	/**
	 * 构造函数 
	 * @param text
	 * @param preferredSize
	 * @param alignment
	 */
	public GLabel(String text, Dimension preferredSize,int alignment) {
		this(null, null, text, null,preferredSize,alignment);
	}
	
	/**
	 * 构造函数
	 * @param container 容器 
	 * @param text 文本
	 */
	public GLabel(Container container,String text) {
		this(container, null, text, null,null,GLabel.CENTER);
	}
	
	/**
	 * 构造函数 
	 * @param text 文本
	 */
	public GLabel(String text) {
		this(null, null, text, null,null,GLabel.CENTER);
	}
	
	/**
	 * 构造函数 
	 * @param text
	 * @param alignment
	 */
	public GLabel(String text,int alignment) {
		this(null, null, text, null,null,alignment);
	}
	
	/** IG */
	private GComponent core;
	public GComponent getGCore() {return core;}
	
	/**
	 * pressed
	 */
	private boolean pressed=false;
	
	/**
	 * @return the pressed
	 */
	public boolean isPressed() {
		return pressed;
	}

	/**
	 * @param pressed the pressed to set
	 */
	public void setPressed(boolean pressed) {
		this.pressed = pressed;
	}

	public void paintChildren(Graphics g) {core.paintChildren(g);super.paintChildren(g);}
	
}
